每次读取一行字符串输入

    using namespace std;
    char name[20];
    char dessert[20];
    // 读取一行 直到遇到换行符
    // cin.getline()  丢弃换行符
    // cin.get()      保留换行符在输入序列中

    // 以下可以使用这种组合方式 cin.getline(name, 20).getline(dessert, 20);
//    cin.getline(name, 20); // 最多保留19个字符 最后存放'\0'
//    cin.getline(dessert, 20);

    // 由于换行符保留在输入序列中,则下次读取到换行符,则get()认为已达到行尾,可用不带參的get()读取下一个字符
    cin.get(name, 20);    // 可以组合 cin.get(name, 20).get();
    cin.get();
    cin.get(dessert, 20);

    cout << name << endl;
    cout << dessert << endl;

空行和其他问题

当getline()或get()读取空行时

当get()读取空行后将设置失效位(failbit)。这意味着接下来的输入将被阻断,但可以用下面的命令来恢复输入:

cin.clear();

另一个潜在的问题是,输入字符串可能比分配的空间长。getline()和get()将把余下的字符留在输入队列中,而 getline()还会设置失效位,并关闭后面的输入。

🔚